package com.ashlikun.core.listener

import android.content.Context
import android.view.View
import androidx.annotation.IdRes
import androidx.viewbinding.ViewBinding

/**
 * @author　　: 李坤
 * 创建时间: 2021/12/19 19:54
 * 邮箱　　：496546144@qq.com
 *
 * 功能介绍：一个窗口要实现的接口
 */
interface IBaseWindow {
    val requireContext: Context

    /**
     * 获取布局id
     * 优先使用
     */
    val layoutId: Int
        get() = View.NO_ID

    /**
     * 获取布局id
     * 优先使用
     */
    val binding: ViewBinding?
        get() = null

    /**
     * 获取布局view
     * 次优先使用
     * @return
     */
    val contentView: View?
        get() = null


    /**
     * 初始化view
     */
    fun initView()

    /**
     * 初始化数据
     */
    fun initData() {}

    /**
     * 销毁页面
     */
    fun finish()

    /**
     * 销毁网络访问
     */
    fun cancelAllHttp()

    /**
     * 自定义查找控件
     *
     * @param id
     * @param <T>
     * @return
    </T> */
    fun <T : View?> f(@IdRes id: Int): T?
}